"""
============================
@auther:多测师-黄sir
@time:2021/9/8:10:43
@email:hw18983616870@163.com
@website:www.duoceshi.cn
============================
"""
'''此模块用来封装所有的页面操作方法'''
# 以下两行代码是用来调试数据用
# from selenium import webdriver
# driver = webdriver.Chrome()


class BasePage:

    #单例模式：主要用于设置只在一个流程中打开一个浏览器
    @classmethod
    def set_driver(cls,driver):
        cls.driver = driver

    @classmethod
    def get_driver(cls):
        return cls.driver

    #封装打开地址的方法
    @classmethod
    def open_url(cls,url):
        cls.driver.get(url)
    #封装元素定位的方法
    @classmethod
    def find_ele(cls,element):
        type = element[0]
        value = element[1]
        if type == 'id':
            cls.ele = cls.driver.find_element_by_id(value)
        elif type == 'name':
            cls.ele = cls.driver.find_element_by_name(value)
        elif type == 'class':
            cls.ele = cls.driver.find_element_by_class_name(value)
        elif type == 'xapth':
            cls.ele = cls.driver.find_element_by_xpath(value)
        elif type == 'css':
            cls.ele = cls.driver.find_element_by_css_selector(value)
        elif type == 'link':
            cls.ele = cls.driver.find_element_by_link_text(value)

    #封装输入内容的方法
    def input(self,text):
        return self.ele.send_keys(text)
    #封装点击按钮的方法
    def click_btn(self):
        return self.ele.click()
    #封装窗口最大化的方法
    def max_window(self):
        return self.driver.maximize_window()
    #封装隐式等待方法
    def wait(self,sec):
       return self.driver.implicitly_wait(sec)
    #封装获取元素文本值方法
    def ele_text(self):
        return self.ele.text
    #封装获取页面的title
    def page_title(self):
        return self.driver.title

if __name__ == '__main__':
    b = BasePage()
    b.set_driver(driver)
    dr = b.get_driver()
    dr.get('http://www.baidu.com')
    b.wait(20)
    b.max_window()
    baidu_input = ['id','kw']
    b.find_ele(baidu_input)
    b.input('python')


